package modelo;

import geometria.Coordenada;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
 * 
 * Trayectoria de un objeto móvil, consistente en coordenadas y los segmentos que las unen.
 *
 */
public class Trayectoria implements Iterable<Coordenada> {
	private List<Coordenada> puntos;

	public Trayectoria(){
		this.puntos = new ArrayList<Coordenada>();
	}
	

	public boolean esVacia(){
		return puntos.isEmpty();
	}

	public boolean estaEnUltimoPunto() {
		return (puntos.size() == 1);
	}
	
	public void agregarPunto(Coordenada p){
		puntos.add(p);
	}
	
	@Override
	public Iterator<Coordenada> iterator(){
		return puntos.iterator();
	}


	public void avanzarPunto() throws TrayectoriaVaciaException{
		try{
			puntos.remove(0);
		}
		catch (IndexOutOfBoundsException e){
			throw new TrayectoriaVaciaException();
		}
	
	}


	public Coordenada obtenerProximoPunto() throws TrayectoriaVaciaException{
		try{
			return puntos.get(0);
		}
		catch (IndexOutOfBoundsException e){
			throw new TrayectoriaVaciaException();
		}
		
	}

}
